# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import ValidationError
import datetime

class EmpLeave(models.Model):
    _name = 'emp.leave'


    pautono = fields.Integer('人員電腦編號') # 人員電腦編號
    year = fields.Char('年度') # 年度
    formno = fields.Char('請假單號') # 請假單號
    state = fields.Char('假單狀態') # 假單狀態
    name = fields.Many2one(string='請假人姓名',comodel_name='emp.peo') # 請假人姓名
    ptitle = fields.Char('職稱') # 職稱
    dep = fields.Char('單位') #單位
    code = fields.Char('請假人員工編號') #請假人員工編號
    type = fields.Many2one(string='假別',comodel_name='emp.leaveoption') #假別
    attach = fields.Binary('附件') #假別附件別
    reason = fields.Char('請假事由') #請假事由

    vstart = fields.Datetime('請假起日') # 請假起日

    vstart_hour = fields.Selection(string='',selection=[(0,'00'),(1,'01'),(2,'02'),(3,'03'),(4,'04'),(5,'05'),(6,'06'),
                                            (7, '07'), (8, '08'), (9, '09'), (10, '10'), (11, '11'), (12, '12'),
                                            (13, '13'), (14, '14'), (15, '15'), (16, '16'), (17, '17'), (18, '18'),
                                            (19, '19'), (20, '20'), (21, '21'), (22, '22'), (23, '23')])
    vstart_min = fields.Selection(string='',selection=[(0,'00'),(30,'30')])
    vend = fields.Datetime('請假迄日') # 請假迄日
    vend_hour = fields.Selection(string='',selection=[(0,'00'),(1,'01'),(2,'02'),(3,'03'),(4,'04'),(5,'05'),(6,'06'),
                                            (7, '07'), (8, '08'), (9, '09'), (10, '10'), (11, '11'), (12, '12'),
                                            (13, '13'), (14, '14'), (15, '15'), (16, '16'), (17, '17'), (18, '18'),
                                            (19, '19'), (20, '20'), (21, '21'), (22, '22'), (23, '23')])
    vend_min = fields.Selection(string='',selection=[(0,'00'),(30,'30')])

    vstart_real = fields.Datetime() #使用者兩個real是為了解決odoo時差8小時的問題方便去做計算
    vend_real = fields.Datetime()


    vdays = fields.Integer('請假天數') #請假天數
    vhours = fields.Float('請假時數') #請假時數
    created = fields.Datetime('建檔日期') #建檔日期
    remark = fields.Char('特殊說明') #特殊說明
    option1 = fields.Char('有無課') #有無課
    option2 = fields.Char('日間部課程') #日間部課程
    option3 = fields.Char('進修部課程') #進修部課程
    option4 = fields.Char('學生輔導時間') #學生輔導時間
    option5 = fields.Char('與亡者關係') #與亡者關係

    option6 = fields.Date('結婚登記日') #結婚登記日

    option7 = fields.Char('附件其他說明') #附件其他說明
    option8 = fields.Char('附見文號') #附見文號
    option9 = fields.Char('懷孕月數') #懷孕月數
    option10 = fields.Char('用掉補修時數') #用掉補修時數
    applyname = fields.Char(string='申請人', readonly = True) #申請人
    applyno = fields.Char('申請人員工編號') #申請人員工編號
    sess = fields.Char('學期') #學期
    phome = fields.Char('電話') #電話
    mobile = fields.Char('手機') #手機
    agent = fields.Many2one(string='代理人姓名',comodel_name='emp.peo') #代理人姓名
    sign_status = fields.Char('簽核狀態') #簽核狀態
    status = fields.Char('表單狀態') #表單狀態
    agentpno = fields.Char('代理人員工編號') #代理人員工編號
    depno = fields.Char('請假人主要單位') #請假人主要單位
    depno2 = fields.Char('請假人以第二單位') #請假人以第二單位
    adminunit = fields.Char('主要單位') #主要單位
    deplevel = fields.Char('請假人第二單位') #請假人第二單位
    admin = fields.Char()
    depkind = fields.Char('此部門是行政單位還是教學單位') #此部門是行政單位還是教學單位
    istutor = fields.Char('是否為導師') #是否為導師
    formhours = fields.Float('應請幾時') #應請幾時
    compensate_reason = fields.Char('補修事由') #補修事由
    form06_no = fields.Char('補修單號') #補修單號
    form06_id = fields.Char('補修單流水號') #補修單流水號
    baby_status = fields.Selection(string='懷孕狀態',selection=[(u'生產','生產'),(u'流產','流產')]) #懷孕狀態
    money = fields.Char(string='懷孕') #懷孕
    deadrelation_name = fields.Char(string='死者姓名') #死者姓名
    turn_new = fields.Char(string='請假單異動事由') #請假單異動事由
    compensate_reason = fields.Text('請假原因')


    type_day = fields.Text(readonly = True)
    invis_type_day = fields.Text()

    type_tb = fields.Text(readonly = True, related='invis_type_tb')
    invis_type_tb = fields.Text('假別備註')

    none = fields.Boolean('無')
    doctor_p = fields.Boolean('醫師證明')
    married_p = fields.Boolean('喜帖/結婚證明')
    dead_p = fields.Boolean('訃文/死亡證明')
    babyborn_p = fields.Boolean('嬰兒出生證明')
    changelesson_p = fields.Boolean('調課表')
    gov_p = fields.Boolean('公文、簽呈')
    gov_num = fields.Char('文號：')
    other = fields.Boolean('其他')
    desc = fields.Char('說明：')



    @api.model
    def create(self,vals):
        vals['applyname'] = self.env.user.name
        res = super(EmpLeave,self).create(vals)
        return res

    @api.multi
    def write(self, vals):
        vals['type_day'] =  "個人年度特別休假尚餘7天 0小時　計算區間~\n" + "補休尚餘0天 0.00小時、事假已請0天 0.0小時、病假已請0天 0.0小時"
        res = super(EmpLeave, self).write(vals)
        return res


    @api.onchange('name')
    def name_not_null(self):

       peo_data = self.env['emp.peo'].search([('id','=',self.name.id)])
       self.dep  = peo_data.jobkind
       self.ptitle = peo_data.depkind


    @api.onchange('applyname')
    def get_user_name(self):
        self.applyname = self.env.user.name

    @api.onchange('type')
    def get_text(self):
        if self.type:
            self.invis_type_tb = self.type.memo



    def get_day_off_time(self):

            if(self.vstart=='' or self.vend==''):
                raise ValidationError(u'請假起日與迄日不得為空')


            vstart = datetime.datetime.strptime(self.vstart,'%Y-%m-%d %H:%M:%S')
            vstart += datetime.timedelta(hours=8)
            vend = datetime.datetime.strptime(self.vend,'%Y-%m-%d %H:%M:%S')
            vend += datetime.timedelta(hours=8)
            self.vstart_real = vstart
            self.vend_real = vend


            self.vdays = int(datetime.datetime.strftime(self.vend,'%Y-%m-%d %H:%M:%S'))

            if(abs(vend.hour)>=13):
                self.vhours =abs((vend.hour-vstart.hour)) - 1
            else:
                self.vhours = abs((vend.hour-vstart.hour))
            if self.vhours >= 8:
                self.vdays += 1
                self.vhours = 0

            # # 個人行事曆判斷
            #
            # # 週行事曆判斷
            #
            # # 特殊行事曆判斷
            # special_data = self.env['emp.calenderspecial'].search([('specialdate', '>=', self.vstart),('specialdate', '<=', self.vend)])
            # print(special_data)
            #
            # if (special_data.duty == 'N'):
            #     raise ValidationError(u'特殊假放假')
            # if (special_data.duty == 'Y'):
            #     raise ValidationError(u'特殊假沒放假')
            #
            #
            # self.type_day = "個人年度特別休假尚餘7天 0小時　計算區間~\n" + "補休尚餘0天 0.00小時、事假已請0天 0.0小時、病假已請0天 0.0小時"

    #使用2個欄位來計算 休假時間







